/**
 * GTBarButtonWithSortIcon.m
 *
 * The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");
 * you may not use this file except in compliance with the License. You may obtain a copy of the License 
 * at http://www.mozilla.org/MPL/
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
 * either express or implied. See the License for the specific language governing rights and limitations 
 * under the License.
 *
 * The Original Code is gcast-toolbox4iphone.
 *
 * The Initial Developers of the Original Code is Giannandrea Castaldi.
 */
#import "GTBarBorderButtonWithSortIcon.h"

@interface GTBarButtonWithUIBorderButton ()
@property(nonatomic,retain,readonly) UIButton *button;
- (UIButton*)buttonWithTitle:(NSString*)aTitle font:(UIFont*)aFont;
@end

@interface GTBarBorderButtonWithSortIcon ()
- (UIImage*)sortIcon;
@end


@implementation GTBarBorderButtonWithSortIcon
@synthesize sortSelected;
@synthesize sortAscending;

+ (id)buttonWithTitle:(NSString*)aTitle font:(UIFont*)aFont {
  return [[[GTBarBorderButtonWithSortIcon alloc] initWithTitle:aTitle font:aFont] autorelease];
}

- (id)initWithTitle:(NSString*)aTitle font:(UIFont*)aFont {
  if ((self = [super initWithTitle:aTitle font:aFont icon:[self sortIcon]])) {
    [self deselect];
  }
  return self;
}

- (void)dealloc {
  [super dealloc];
}

- (void)selectWithSortAscending:(BOOL)ascending {
  sortSelected = TRUE;
  sortAscending = ascending;
  [self.button setImage:[self sortIcon] forState:UIControlStateNormal];
}

- (void)deselect {
  sortSelected = FALSE;
  sortAscending = TRUE;
  [self.button setImage:[self sortIcon] forState:UIControlStateNormal];
}

- (void)sortingButtonPressed {
  if (!sortSelected) {
    sortSelected = TRUE;
    sortAscending = TRUE;
  }
  else {
    sortAscending = !sortAscending;
  }
  [self.button setImage:[self sortIcon] forState:UIControlStateNormal];
  if ([super target] && [super action]) {
    [self.target performSelector:self.action withObject:self];
  }
}

- (void)buttonPressed {
  if (!sortSelected) {
    sortSelected = TRUE;
    sortAscending = TRUE;
  }
  else {
    sortAscending = !sortAscending;
  }
  [self.button setImage:[self sortIcon] forState:UIControlStateNormal];
  [super buttonPressed];
}

- (UIImage*)sortIcon {
  NSString *direction = sortAscending ? @"down" : @"up";
  NSString *color = sortSelected ? @"orange" : @"white";
  NSString *imageToLoad = [NSString stringWithFormat:@"arrow-%@-%@.png", direction, color];
  return [UIImage imageNamed:imageToLoad];
}

@end